package view.actions;

import beans.GeneralTo;
import beans.ProductoTo;
import java.io.IOException;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import negocio.GeneralManager;
import negocio.GeneralManagerException;
import negocio.ProductoManager;
import negocio.ProductoManagerException;
import negocio.UsuarioManagerException;

import negocio.VentasManager;
import negocio.VentasManagerException;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import utildb.TransactionException;

import view.forms.buscarProductosForm;
import view.forms.ingresarLoginForm;


public class BuscarProductoAction extends Action {
    String cBuscar;
    String cadentmp;
    public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request, 
                                 HttpServletResponse response) throws IOException, 
                                                                      ServletException, 
                                                                      VentasManagerException,
                                                                      TransactionException {
        //      --------
        VentasManager pmg = new VentasManager();
        HttpSession session  = request.getSession(false);

        buscarProductosForm objform;
        objform = (buscarProductosForm) form;
        String operacion = objform.getOperacion();
        String codCategoria = objform.getCbxCategoria();
        String txtNombUser = (String)session.getAttribute("txtNombUser");
        session.setAttribute("txtNombUser", txtNombUser );
        request.setAttribute("txtNombUser", txtNombUser);

        if (operacion != null && operacion.equals("llamadamenu")) {
            // Para llenar el combox de categoria
            ArrayList listaCategorias = new ArrayList();
            listaCategorias = pmg.arrayTablas("%011%", 1);
            objform.setPpdCategoria(listaCategorias);
            session.setAttribute("ppdCategoria", listaCategorias );
            request.setAttribute("ppdCategoria",listaCategorias);
            objform.setCbxCategoria("%");
            objform.setProd_sele(null);

        }

        // REALIZAR LA BUSQUEDA DE PRODUCTOS
        if ((operacion != null) && (operacion.equals("ejecutarbuscar") ||
                                    operacion.equals("llamadamenu"))) {
            String ctxtBuscar = objform.getTxtBuscar();
            int flg_formato_view = 1;
            double txtPrecioDesde = objform.getTxtPrecioDesde();
            double txtPrecioHasta = objform.getTxtPrecioHasta();
            ArrayList listaCategorias = (ArrayList)session.getAttribute("ppdCategoria");
            request.setAttribute("ppdCategoria",listaCategorias);

            // configurar variables
            if (codCategoria != null && codCategoria.substring(1).equals("%")) {
               codCategoria = "%";
            }            
            if (codCategoria == null) {
               codCategoria = "%";
            }
            if ((ctxtBuscar == null) || (ctxtBuscar.length()==0)) {
               ctxtBuscar = "%";
            }
            else {
                ctxtBuscar = "%" + ctxtBuscar.toUpperCase() + "%";
            }

            ArrayList listaProductos;
            try {
                listaProductos = pmg.ejecutarBuscarProductos("%",
                                                "%",codCategoria,
                                                ctxtBuscar, 
                                                txtPrecioDesde,
                                                txtPrecioHasta);
                if (listaProductos != null ) {
                    objform.setListaProductos(listaProductos);
                    objform.setFlg_formato_view(flg_formato_view);
                    //
                    request.setAttribute("listaProductos", listaProductos );
                    request.setAttribute("flg_formato_view", flg_formato_view );
                    //
                    session.setAttribute("listaProductos", listaProductos );
                    session.setAttribute("flg_formato_view", flg_formato_view );
                    objform.setNcan_Vent(0);
                    objform.setProd_sele(null);
                }
            } catch (UsuarioManagerException ex) {
                Logger.getLogger(BuscarProductoAction.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
        return mapping.findForward( "success");
    }
}
